昨天發現 Threshold Alert 的設計無法符合我的選股程式的需求,今天來看看 Advanced Watcher 吧!
首先,點擊下圖的按鈕:
然後會看到下面的介面:
Watch Json 的格式讓人非常熟悉,就是前面玩過的 RESTful API 的組合,高度的客製化就可以實作在 Query。
一個 Watch 包含了四個必要部分:
首先,我設定一個實驗性的問題:「每 10 秒,檢查 stock-history-prices-daily Index,當股票代號 1101 的個股,最後收盤價大於 40 元時,把結果寫入新的 Index」。這麼做的目的,是前端以後只要定期去檢查選股結果的 Index 即可,日後只要在收盤價被更新後,再指定執行時間即可,10秒純粹是不想等太久啦!Kibana 預設給了一個範本,就照著改改看吧!
{
"trigger": {
"schedule": {
"interval": "10s" #1
}
},
"input": {
"search": {
"request": {
"body": { #2
"size": 1,
"sort": [
{
"date": {
"order": "desc"
}
}
],
"query": {
"match": {
"stock_id": "1101"
}
}
},
"indices": [
"stock-history-prices-daily" #3
]
}
}
},
"condition": {
"compare": {
"ctx.payload.hits.hits.0._source.close": { #4
"gte": 40
}
}
},
"actions": {
"my-index-action": {
"index": {
"index": "stock-selection-daily" #5
}
}
}
}
上面的 Query DSL #1 ~ #5 即是依我定義的問題進行修改。來看看結果:
點擊 Watcher ID 就可以查看 Watch 的執行結果:
直接搜尋 stock-selection-daily 更直觀的看看結果:
GET /stock-selection-daily/_search
{
"query" : {
"match_all": {}
}
}
不錯! 如預期的成功設置了 Watcher。可惜的是 Elasticsearch DSL 文件上,目前並沒有支援 Watcher,所以要下苦功自己刻啦。 累了,明天見!